//package com.dinfo.common;
//
//import java.io.IOException;
//import java.io.InputStream;
//import java.io.NotSerializableException;
//import java.io.Serializable;
//import java.util.Properties;
//import java.util.concurrent.TimeoutException;
//
//import net.rubyeye.xmemcached.CASOperation;
//import net.rubyeye.xmemcached.MemcachedClient;
//import net.rubyeye.xmemcached.MemcachedClientBuilder;
//import net.rubyeye.xmemcached.XMemcachedClientBuilder;
//import net.rubyeye.xmemcached.exception.MemcachedException;
//import net.rubyeye.xmemcached.utils.AddrUtil;
//
//public class XmemMng {
//
//	private MemcachedClient mc = null;
//	private static XmemMng instance = null;
//
//	public static synchronized XmemMng getInstance() {
//		if (instance == null) {
//			instance = new XmemMng();
//		}
//		return instance;
//	}
//	/**
//	 * 初始化xmemcache
//	 */
//	private XmemMng() {
//		ClassLoader cl = Thread.currentThread().getContextClassLoader();
//		InputStream infile = cl.getResourceAsStream("memcached.properties");
//		Properties props = new Properties();
//		String serverlist = "127.0.0.1:11211";
//		try {
//			props.load(infile);
//			serverlist = props.getProperty("serverlist", "127.0.0.1:11211");
//
//		} catch (Exception e) {
//			e.printStackTrace();
//		}
//
//		try {
//			MemcachedClientBuilder builder = new XMemcachedClientBuilder(
//					AddrUtil.getAddresses(serverlist));
//			// builder.setCommandFactory(new BinaryCommandFactory());//use
//			// binary protocol
//			mc = builder.build();
//			// 超时时间10秒
//			mc.setOpTimeout(10 * 1000L);
//
//		} catch (IOException e) {
//			throw new XmemcacheException("连接远程memcache出错,网络错误.", e);
//		}
//	}
//	/**
//	 * 获取xmemcache客户端
//	 * @return
//	 */
//	public MemcachedClient getMc() {
//		return mc;
//	}
//	/**
//	 * get方法
//	 * @param id
//	 * @return
//	 */
//	public Object get(String id) {
//		try {
//			return this.mc.get(id);
//		}  catch (Exception e) {
//			dealException(e);
//			return null;
//		}
//	}
//	
//	public boolean set(String id, int expire, Object obj) {
//		try {
//			checkSerializable(obj);
//			return this.mc.set(id, expire, obj);
//		}  catch (Exception e) {
//			dealException(e);
//			return false;
//		}
//	}
//
//	public boolean set(String id, Object obj) {
//		return this.set(id, 0, obj);
//	}
//
//	public boolean add(String id, int expire, Object obj) {
//		try {
//			checkSerializable(obj);
//			return this.mc.add(id, expire, obj);
//		} catch (Exception e) {
//			dealException(e);
//			return false;
//		}
//	}
//
//	public boolean add(String id, Object obj) {
//		return this.add(id, 0, obj);
//	}
//
//	public boolean replace(String id, int expire, Object obj) {
//		try {
//			checkSerializable(obj);
//			return this.mc.replace(id, expire, obj);
//		}  catch (Exception e) {
//			dealException(e);
//			return false;
//		}
//	}
//
//	public boolean replace(String id, Object obj) {
//		return this.replace(id, 0, obj);
//	}
//
//	public boolean cas(String id, int expire, CASOperation oper) {
//		try {
//			return mc.cas(id, expire, oper);
//		}  catch (Exception e) {
//			dealException(e);
//			return false;
//		}
//	}
//	public boolean delete(String id) {
//		try {
//			return mc.delete(id);
//		} catch (Exception e) {
//			dealException(e);
//			return false;
//		}
//	}
//	
//	private void checkSerializable(Object obj){
//		if (obj!=null&&!(obj instanceof Serializable)) {
//			Exception e= new NotSerializableException();
//			e.printStackTrace();
//			throw new XmemcacheException("对象不可以序列化",e);
//		}
//	}
//	
//	private void dealException(Exception exp){
//		try {
//			throw exp;
//		} catch (TimeoutException e) {
//			throw new XmemcacheException("网络错误,网络超时!", e);
//		} catch (InterruptedException e) {
//			throw new XmemcacheException("网络错误,网络中断!", e);
//		} catch (MemcachedException e) {
//			throw new XmemcacheException("Memcached服务错误!", e);
//		}catch(Exception e){
//			e.printStackTrace();
//			throw new XmemcacheException("Memcached client其它错误!", e);
//		}
//	}
//}
